/*
 * G3DMExporter.h
 *
 *  Created on: Jan 13, 2014
 *      Author: knuke
 */

#ifndef G3DMEXPORTER_H_
#define G3DMEXPORTER_H_

#include "Exporter.h"
#include "BinaryStream.h"
#include <string>

namespace graphiclicious_converter
{
  class Material;
  class Mesh;
  class Triangle;
  class Node;
  class Model;
  class G3DMExporter : public Exporter
  {
  public:
    G3DMExporter();
    virtual ~G3DMExporter();

    void exportModel(Model* model, std::string out_file);

  private:
    BinaryStream stream_;

    void writeMaterial(Material* mat);
    void writeMesh(Mesh* mesh);
    void writeTriangle(Triangle* tri);
    void writeNode(Node* node);
  };

} /* namespace graphiclicious_converter */

#endif /* G3DMEXPORTER_H_ */
